from flask import session,current_app,g
from info.models import User
import functools
# 点击新闻的过滤器
def index_class(index):
    if index==0:
        return 'first'
    elif index ==1:
        return 'second'
    elif index ==2:
        return 'third'
    else:
        return ''

#  检查用户是否登陆，抽取为装饰圈
def login_require(f):

    #函数名冲突解决方式2：使用functools使装饰器不改变原函数的属性(__name__e)
    @functools.wraps(f)
    def wrapper(*args,**kwargs):
        user_id = session.get('user_id')
        user = None
        if user_id:
            try:
                user = User.query.get(user_id)
            except Exception as e:
                current_app.logger.error(e)
        g.user = user
        return f(*args,**kwargs)
    '''
    函数名冲突解决方式1：
    在返回之前将函数名赋值给装饰器保证使用装饰器后不改变原函数名称，否则会引发函数重名错误
    '''
    wrapper.__name__ = f.__name__
    return wrapper